iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Odoo

Odoo16 入門介紹系列 第 13

Day13_odoo_One2many

  • 分享至 

  • xImage
  •  

One2many

在odoo中,其實並沒有One2many的專屬欄位,它只是反向Many2one,所以想使用One2many必須要有對應的Many2one

class BookName(models.Model):
    _name = 'book.name'
    _description = "book's name model"
    
    name = fields.Char(string='Name', required=True)
    book_id = fields.Many2one('category', string='Category', required=True)

class Category(models.Model):
    _name = 'category'
    _description = "category's model"
    
    name = fields.Char(string='Name', required=True)
    category_id = fields.One2many('book.name', 'book_id', string='Book's Name ID')

在使用One2many時,我們必須要確認再Many2one中有相對應的欄位才能夠使用。
首先我們先參考上上節的Many2one,我們將使用book_id這個欄位來時做One2many
我們在Modelcategory創建欄位category_id,宣告其為關聯欄位One2many,設定所對應的model與
其中對應的欄位名稱,這樣就設定完成了。
在DB中我們可以發現,TableCategory並沒有category_id這個欄位,因為它是使用book_id邏輯生成的。

One2many的parameter:

comodel_name: 必填參數,它是與當前模型相關聯的模型的名稱。這是一個字符串,應該是相關模型的技術名稱。

inverse_name: 必填參數,它是與相關模型相關聯的反向關聯字段的名稱。這告訴Odoo如何在相關模型中建立反向關聯。

string: 可選參數,用於指定在Odoo中顯示的字段標籤(標籤)。

除了上面列出的基本參數,One2many 字段還支持其他可選參數,例如:

domain: 用於定義一個過濾條件,以限制與當前記錄相關聯的記錄。它是一個包含Odoo域表達式的字符串。

context: 用於設定上下文(context)字典,以在與當前記錄相關聯的記錄上傳遞附加信息。

limit: 用於設定與當前記錄相關聯的記錄的最大數量。

auto_join: 布爾值,用於指示是否自動加入related.model.name中的其他一對多字段。如果設置為True,則Odoo將自動加入相關模型中的其他一對多字段。

help: 字段的幫助提示,用於提供有關字段用途的描述。

在這邊我們發現在One2many的屬性中並沒有ondelete,這就是前面提到的,它是反向的Many2one所以想要對它設定ondelete只能透過設定對應的欄位來實現。


上一篇
Day12_odoo_Many2many
下一篇
Day14_odoo_關聯欄位總結
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言